01-최소권한원칙

최소권한원칙

목표

IAM의 최소권한 원칙을 이해하고, 현재 실습 환경에 세분화된 권한 정책을 적용하여 보안을 강화해봅시다.

최소권한 원칙이란?

기본 개념

최소권한 원칙 (Principle of Least Privilege):

현재 상황 분석

일반적인 문제:

개발자 계정 → AdministratorAccess 정책
- EC2, RDS, IAM 등 모든 서비스 전체 권한
- 실수로 중요한 리소스 삭제 가능
- 보안 사고 시 피해 범위 최대화

최적화 목표:

개발자 계정 → 역할별 세분화 권한
- 웹 개발자: EC2, RDS 읽기 + 제한적 쓰기
- 인프라 담당자: EC2, VPC 관리
- 모니터링 담당자: CloudWatch 읽기 전용

현재 권한 상황 분석

사용 중인 IAM 요소 확인

IAM 콘솔에서 확인:

  1. IAM사용자 → 현재 사용자 확인
  2. 연결된 정책 탭에서 현재 권한 확인
  3. 권한 탭에서 세부 권한 분석

일반적인 AWS Academy 권한:

실제 필요한 권한 분석

Week 3.5 실습을 위해 사용한 권한:

  1. EC2: 인스턴스 생성, 중지, 시작, 보안그룹 수정
  2. RDS: 인스턴스 생성, 수정, 백업
  3. ELB: ALB 생성, 수정, Target Group 관리
  4. Auto Scaling: ASG, Launch Template 관리
  5. CloudWatch: 메트릭 조회, 알람 생성
  6. Cost Explorer: 비용 정보 조회

역할 기반 권한 설계

웹 개발자 역할

필요한 권한:

정책 예시:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:RebootInstances"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/Project": "webapp"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "rds:DescribeDBInstances",
                "rds:DescribeDBClusters"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:DescribeLogGroups",
                "logs:DescribeLogStreams",
                "logs:GetLogEvents"
            ],
            "Resource": "*"
        }
    ]
}

인프라 담당자 역할

필요한 권한:

모니터링 담당자 역할

필요한 권한:

실습: 제한된 권한 사용자 생성

1단계: 모니터링 전용 사용자 생성

IAM 사용자 생성:

  1. IAM사용자사용자 생성
  2. 사용자 이름: webapp-monitor
  3. AWS Management Console 액세스: 체크
  4. 사용자 지정 암호: 설정

2단계: 커스텀 정책 생성

CloudWatch 읽기 전용 정책:

  1. IAM정책정책 생성
  2. JSON 탭 선택
  3. 다음 정책 입력:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:Get*",
                "cloudwatch:List*",
                "cloudwatch:Describe*"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeRegions",
                "ec2:DescribeAvailabilityZones"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "elasticloadbalancing:Describe*"
            ],
            "Resource": "*"
        }
    ]
}
  1. 정책 이름: WebApp-Monitoring-ReadOnly
  2. 정책 생성

3단계: 사용자에게 정책 연결

정책 연결:

  1. 사용자webapp-monitor 선택
  2. 권한 추가정책 직접 연결
  3. WebApp-Monitoring-ReadOnly 선택
  4. 권한 추가

4단계: 제한된 권한 테스트

새 사용자로 로그인:

  1. AWS 콘솔 로그아웃
  2. webapp-monitor 계정으로 로그인
  3. CloudWatch 접근 → 정상 동작 확인
  4. EC2 접근 → 조회만 가능, 수정 불가 확인

리소스 기반 권한 제어

태그 기반 접근 제어

리소스 태깅 전략:

태그 키: Project, 값: webapp
태그 키: Environment, 값: prod/dev/test
태그 키: Owner, 값: team-name

태그 기반 정책 예시:

{
    "Effect": "Allow",
    "Action": "ec2:*",
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "ec2:ResourceTag/Project": "webapp",
            "ec2:ResourceTag/Environment": "dev"
        }
    }
}

시간 기반 접근 제어

업무 시간에만 접근 허용:

{
    "Effect": "Allow",
    "Action": "ec2:*",
    "Resource": "*",
    "Condition": {
        "DateGreaterThan": {
            "aws:RequestedRegion": "09:00Z"
        },
        "DateLessThan": {
            "aws:RequestedRegion": "18:00Z"
        }
    }
}

권한 모니터링 및 감사

CloudTrail을 통한 권한 사용 추적

CloudTrail 이벤트 확인:

  1. CloudTrail이벤트 기록
  2. 사용자 이름 필터로 특정 사용자 활동 추적
  3. API 호출 패턴 분석

주요 확인사항:

Access Analyzer 활용

IAM Access Analyzer:

  1. IAMAccess Analyzer
  2. 외부 접근 가능한 리소스 확인
  3. 권한 사용 분석 검토

권한 최적화 프로세스

1단계: 현재 권한 감사

권한 사용 패턴 분석:

# CloudTrail 로그 분석 (개념)
aws logs filter-log-events \
  --log-group-name CloudTrail/logs \
  --filter-pattern "{ $.userIdentity.userName = 'target-user' }"

2단계: 불필요한 권한 식별

90일간 사용하지 않은 권한:

3단계: 단계적 권한 축소

안전한 권한 축소 절차:

  1. 모니터링 기간: 새 정책으로 2주간 시뮬레이션
  2. 테스트 환경: 제한된 환경에서 먼저 적용
  3. 점진적 적용: 사용자별/팀별 순차 적용
  4. 롤백 계획: 문제 발생 시 즉시 복구

보안 모범 사례

MFA (Multi-Factor Authentication) 적용

MFA 설정:

  1. IAM사용자보안 자격 증명
  2. 멀티 팩터 인증MFA 디바이스 할당
  3. 가상 MFA 디바이스 선택 (Google Authenticator 등)

권한 정기 검토

월별 검토사항:

  1. 신규 사용자 권한 적절성 검토
  2. 장기 미사용 권한 제거
  3. 과도한 권한 탐지 및 조정

비상 접근 계정 관리

Break-glass 계정:

완료 체크리스트

권한 분석 및 설계

실습 구현

보안 강화

운영 프로세스

문제 해결

권한 부족 오류 발생 시

즉시 확인사항:

  1. CloudTrail에서 실패한 API 호출 확인
  2. 필요한 최소 권한 식별
  3. 임시 권한 부여 후 정책 수정

과도한 권한 발견 시

대응 절차:

  1. 해당 권한의 실제 사용 여부 확인
  2. 대체 가능한 최소 권한 탐색
  3. 단계적 권한 축소 적용

최소권한원칙 적용 완료

축하합니다! IAM 최소권한 원칙을 이해하고 실제 적용해보았습니다. 이제 보안 강화와 함께 운영 효율성도 향상되었습니다.

다음 단계: AWS EDU/Archive/조선대학교 AWS 멘토링/Week4-Operations-and-Optimization/03-IAM-정책심화/02-IAM-역할과정책심화에서 더 고급 IAM 기능을 학습해보겠습니다.


관련 문서: AWS EDU/Archive/조선대학교 AWS 멘토링/Week4-Operations-and-Optimization/README, AWS EDU/Archive/조선대학교 AWS 멘토링/Week4-Operations-and-Optimization/03-IAM-정책심화/02-IAM-역할과정책심화